#include<stdio.h>
#include<string.h>
#include<math.h>
#include<bits/stdc++.h>
using namespace std;
 
int main() {
	int t;
	int i, j, k, l, n, m,sum;
	scanf("%d", &t);
	while (t--) {
		int a[101][11][110];//a[i][j][k]为i块积木，共j列，第一列为k个方块的方案数
		memset(a, 0, sizeof(a));
		a[1][1][1] = 1;
		scanf("%d %d", &n, &m);
		for (i = 2; i <= n; i++) {
			for (j = 1; j <= m; j++) {
				for (k = 1; k <= i; k++) {
					if (i == k && j == 1) { //如果排成一列，第一列为总积木时，只有一种情况 
						a[i][j][k] = 1;
					} else {
						for (l = k - 1; l >= 1; l--) {
							a[i][j][k] += a[i - k][j - 1][l];
						}
					}
				}
			}//排几列
		}
		sum = 0;
		for (i = 1; i <= n; i++) {
			sum += a[n][m][i];
		}
		sum=sum*(pow(2,m-1)-2);
		printf("%d\n", sum);
	}
	return 0;
}
